package br.com.spb.web;

import javax.servlet.http.HttpServletRequest;

import br.com.spb.domain.Estado;
import br.com.spb.domain.Municipio;
import br.com.spb.domain.Prefeito;
import br.com.spb.persistence.EstadoDao;
import br.com.spb.persistence.MunicipioDao;
import br.com.spb.persistence.PrefeitoDao;

public class PrefeitoWeb {
		private static String TXT;
		private static String SIG_UF;
		private static Long codPartido;

		/**
		 * @param request
		 * @return
		 */
		public static String findPrefeitos(HttpServletRequest request){
			TXT = "";
			String sigUf = request.getParameter("sigUf");
			if(sigUf != null  && !sigUf.trim().equals("")){
				preencherMunicipios(sigUf); 				
			}
			return TXT;
		}

		/**
		 * 
		 */
		private static void preencherMunicipios(String sigUf){ 
			for(Municipio municipio : new MunicipioDao().findByParametros(sigUf, null, null)){ 
				preencherPrefeitos(municipio); 
			}
		}
		

		/**
		 * @param municipio
		 * @param codPartido
		 */
		private static void preencherPrefeitos(Municipio municipio){ 
			for(Prefeito prefeito : new PrefeitoDao().findByParametros(municipio.getCodigo(), null, null,null)){  
				if(cor.equals("linha1")){
					cor = "linha2";
				}else{
					cor = "linha1";
				}
				TXT += "" +
				"<tr class=\""+cor+"\">" +
				"	<td class=\""+cor+"\">"+ municipio.getSigUf() +"</td> " +
				"	<td class=\""+cor+"\">"+ municipio.getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getMunicipioOrigem().getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getPartido().getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getNumVotosFormatado() +"</td> " +
				"</tr>";
			} 
		}
		
		/**
		 * @param request
		 * @return
		 */
		public static String pesquisarPrefeitos(HttpServletRequest request){
			TXT = "";
			preencherParametros(request);
			if(codPartido != null){
				preencherEstados();  
			}
			return TXT;
		}
		
		/**
		 * 
		 */
		private static void preencherEstados(){  
			for(Estado estado: new EstadoDao().findByDescricao(SIG_UF, null)){
				for(Municipio municipio : new MunicipioDao().findByParametros(estado.getSigUf(), null, null)){ 
					preencherMunicipio(municipio, codPartido); 
				}
			} 
		}
		
		/**
		 * @param municipio
		 * @param codPartido
		 */
		private static void preencherMunicipio(Municipio municipio, Long codPartido){ 
			for(Prefeito prefeito : new PrefeitoDao().findByParametros(municipio.getCodigo(), null, codPartido,null)){  
				if(cor.equals("linha1")){
					cor = "linha2";
				}else{
					cor = "linha1";
				}
				TXT += "" +
				"<tr class=\""+cor+"\">" +
				"	<td class=\""+cor+"\">"+ municipio.getSigUf() +"</td> " +
				"	<td class=\""+cor+"\">"+ municipio.getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getMunicipioOrigem().getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getPartido().getNome() +"</td> " +
				"	<td class=\""+cor+"\">"+ prefeito.getNumVotosFormatado() +"</td> " +
				"</tr>";
			} 
		}
		private static String cor = "linha1";

		/**
		 * @param request
		 */
		private static void preencherParametros(HttpServletRequest request){  
			String partido = request.getParameter("codPartido");  
			SIG_UF = request.getParameter("sigUf"); 
			codPartido = null;

		    if(SIG_UF != null && SIG_UF.trim().equals("")){
		    	SIG_UF = null;
		    }
		    if(partido != null && !partido.trim().equals("")){
		    	codPartido = new Long(partido);
		    }
			
		}
}
